home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / c / stut_src / text_pu.h < prev    next >
C/C++ Source or Header  |  1996-06-05  |  7KB  |  251 lines

  1. /*
  2.  * text_Public.h
  3.  *
  4.  * Purpose:
  5.  * --------
  6.  * Structures et constantes necessaires au stockage
  7.  * ainsi qu'… l'‚dition et l'affichage de textes
  8.  * sous GDOS/VDI
  9.  *
  10.  * Suggest:
  11.  * --------
  12.  * Separer en deux modules distincts
  13.  *
  14.  * History:
  15.  * --------
  16.  * 1993: Created by fplanque
  17.  */
  18.   
  19. /*
  20.  * V‚rifie si les pr‚sentes d‚finitions ont d‚ja ‚t‚ faites:
  21.  */
  22. #ifndef TEXT_PU_H
  23. #define TEXT_PU_H
  24.  
  25.  
  26. #include "DFSTRUCT.H"
  27. #include "GEMWDEF.H"
  28.  
  29.  
  30. /*
  31.  * Buffer INT_IN:                  
  32.  *
  33.  * Purpose:
  34.  * --------
  35.  * Voir dans AES.H   ??
  36.  */
  37. #define    INT_IN_SIZE                128                
  38.  
  39. /*
  40.  * Largeur par d‚faut d'une fenˆtre d'‚dition de texte:
  41.  */
  42. #define    DEF_TEXT_WIDTH            60
  43.  
  44. /*
  45.  * Largeur du curseur ds une fenˆtre texte:
  46.  */
  47. #define    CURSOR_WIDTH            2
  48.  
  49. /*
  50.  * Nombre de caractŠres qu'on ajoute au buffer d'‚dition d'une ligne …
  51.  * chaque fois que c'est n‚cessaire:
  52.  */
  53. #define    BUFFER_INCREASE_STEP    40
  54.  
  55. /*
  56.  * Modes de formattage d'un texte compact:
  57.  */
  58. enum
  59.     {
  60.         FMTMODE_NEARBINARY,        /* Cars <32 affich‚s sauf 0, Ý:CR/LF */
  61.         FMTMODE_REZO,                /* N'accŠpte que les cars l‚gaux. Ý:CR */
  62.         FMTMODE_SGLETEXTLINE        /* N'accŠpte que les cars l‚gaux. PAS DE CHANGEMENT DE PARAGRAPHE; tous cars >= 32 */
  63.     };
  64.  
  65. /*
  66.  * Alignements du texte ds une fenˆtre GEM:
  67.  */
  68.     #define    TEXT_VMARGINS_LINERATIO        3        /* 1/3 de ligne de blanc au dessus et en dessous du texte */
  69.     #define    TEXT_VBOTTOM_COMPENSATE        1        /* 1 pixel de plus ds la marge du bas */
  70.     #define    TEXT_HMARGINS_WIDTH            4        /* 4 pixels de blanc …gauche et … droite du texte */
  71.  
  72. /* 
  73.  * Tailles des polices de caractŠres:
  74.  */
  75. #define    DEFNB_TEXTSIZES    20        /* 20 Tailles au max par d‚faut */
  76. #define    DEF_MAXSIZE            40        /* Taille max pard‚faut */
  77.                                     
  78.  
  79. /*
  80.  * D‚finit une taille de texte
  81.  */                                    
  82. typedef
  83.     struct        
  84.     {
  85.         int        points;            /* Taille en "points" */
  86.         int        char_h;            /* Hauteur du caractŠre */
  87.         int        cell_w;            /* Largeur de l'emplacement */
  88.         int        cell_h;            /* Hauteur de l'emplacement */
  89.     }
  90.     TEXTSIZE_DEF;
  91.     
  92. /* 
  93.  * Vdi array(s) definition:
  94.  *
  95.  * Purpose:
  96.  * --------
  97.  * ???
  98.  */
  99. typedef
  100.     struct
  101.     {
  102.         int    font;                            /* No de la fonte */
  103.         int    color;                        /* Couleur du texte */
  104.         int    angle;                        /* Angle d'ecriture */
  105.         int    justify;                        /* Justification horizontale */
  106.         int    ref_line;                    /* Ligne de r‚f‚rence */
  107.         int    mode;                            /* Mode d'‚criture? */
  108.         int    char_w;                        /* Largeur caractŠre */
  109.         int    char_h;                        /* Hauteur caractŠre */
  110.         int    cell_w;                        /* Largeur emplacement */
  111.         int    cell_h;                        /* Hauteur emplacement */
  112.     /* Suppl‚mentaire: */
  113.         int    points;                        /* Taille en points... */
  114.     }
  115.     VDI_TEXT_PARAMS;
  116.  
  117. /*
  118.  * ---------------------- MEMBRES PUBLICS --------------------------
  119.  */
  120.  
  121.     extern    VDI_TEXT_PARAMS    G_std_text;    /* ParamŠtres du texte standard */    
  122.  
  123.  
  124. /*
  125.  * ----------------------- Functions ---------------------------
  126.  */
  127.  
  128.  
  129.     void init_text( void );
  130.  
  131.     int    save_text2datapage(             /* In: FALSE0 si ‚chec sauvegarde */
  132.                     TEXTINFO *    pTextInfo,        /* In: Ptr sur texte … sauver */
  133.                     DATAPAGE    *    pDataPage );    /* In: Datapage ds laquelle il faut sauver */
  134.  
  135.  
  136.     TEXTINFO *    create_TextInfo( void );    /* out: Ptr sur TEXTINFO cr‚e */
  137.     TEXTLINE * TextLine_CreateStandAlone(    /* Out: TEXTLINE cr‚‚e */
  138.                     int     bufsize );            /* In:  Taille buffer  */ 
  139.     void TextLine_Clear(
  140.             TEXTLINE    *    pTextLine ); /* In: Ligne … vider */
  141.     TEXTLINE    *    insert_line( 
  142.                                 TEXTLINE *prev_line, 
  143.                                 char *texte, 
  144.                                 int bufsize, 
  145.                                 TEXTINFO *info_ptr );
  146.  
  147.     TEXT_DRAWPAR *    create_TextDrawPar(                 /* Out: Ptr sur infos d'affichage g‚n‚r‚es */
  148.                         TEXTINFO *    pTextInfo,        /* In:  Ptr sur texte … afficher */
  149.                         long            l_nbLinesMax );/* In:  Nbre max de lignes qu'on veut garder en m‚moire (pour les logs, pas pour les ‚ditables) */
  150.     void    add_textinf( 
  151.             WIPARAMS * pWiParams, 
  152.             const char * inf );
  153.     void    text_addLineToEnd(
  154.             TEXTINFO        *    pTextInfo,        /* In: Texte concern‚ */
  155.             const char    *    cpsz_Text );    /* In: Ligne … dupliker et ins‚rer */
  156.  
  157.  
  158.  
  159.     extern    TEXTINFO *    create_justified_text( 
  160.                                     char        *    p_text,
  161.                                     size_t         size_text,
  162.                                     int            max_line_len );
  163.     extern    TEXTINFO    * create_textedit_zone( void );    /* Out: B */
  164.     extern    void    free_formatext( TEXTINFO *textinfo );
  165.     extern    void    add_textinf( WIPARAMS * wi_params_adr, const char * inf );
  166.     extern    void    complete_textinf( WIPARAMS * wi_params_adr, const char * inf );
  167.  
  168.     void    params_texte( 
  169.             const GRECT *start_box );
  170.  
  171.     /* affichage */
  172.     void    calc_textSizeW( 
  173.                             WIPARAMS  *    pWiParams );
  174.     void    calc_textSizeH( 
  175.                             WIPARAMS  *    pWiParams );
  176.  
  177.  
  178.  
  179.     void    free_formatext( 
  180.                             TEXTINFO *textinfo );
  181.  
  182.     int    create_debugtext( 
  183.                             TEXT_DRAWPAR * *    ppTextDrawPar );
  184.     int    charge_texte( 
  185.                             TEXT_DRAWPAR  * * ppTextDrawPar );
  186.     int    access_text( 
  187.                             DATAPAGE *datapage, 
  188.                             WORK_CONTENT *content_ptr, 
  189.                             TEXT_DRAWPAR * *ppTextDrawPar_retour );        /* Out: */
  190.     void    format_text( 
  191.                             TEXTINFO *    textinfo,             /* In: Zone d'infos pour texte formatt‚ */
  192.                             TEXTLINE *    start_line,            /* In: Ligne … laquelle il faut ins‚rer le texte qu'on va formatter */
  193.                             char        *    text_adr,            /* Ptr sur texte compact en m‚moire */
  194.                             size_t         text_length,        /* Longueur de ce texte compact */
  195.                             int            mode,                 /* In: mode de reconnaissance */
  196.                             int            max_line_len );    /* In: Longueur maximale d'une ligne */
  197.     void    delete_line( 
  198.                             TEXTLINE *    pTextLine,         /* In: Ligne … supprimer */
  199.                             TEXTINFO    *    pTextInfo );    /* In: Texte ds lequel on efface */
  200.  
  201.     /* -- representation ram -- */
  202.     void    create_newText( 
  203.             GRECT *start_box );
  204.  
  205.     void    sauve_texte( 
  206.                             TEXTINFO *    pTextInfo );    /* In: Ptr sur texte … sauver */
  207.  
  208.     BOOL    text_IsFilled(
  209.             TEXTINFO    * pTextInfo );
  210.  
  211.     size_t    compact_text(                            /* Out: Longueur du texte compact */
  212.                 TEXTLINE    *    pTextLine_First,    /* In: 1Šre ligne … compacter */
  213.                 int            mode,                    /* In: FNTMODE_REZO ou FMTMODE_NEARBINARY */
  214.                 char        **    ppBuf_compact );    /* In: adr Buffer contenant texte compact */
  215.     void    textEdit_addChar( 
  216.                             TEXTLINE *    pTextLine,        /* In: Ligne a ‚diter */
  217.                             int            n_col,            /* In: Car … effacer [0..] */
  218.                             char            c_car,            /* In: CaractŠre … ins‚rer */
  219.                             int            n_maxlen );        /* In: Longueur maximale d'une ligne */
  220.     void    textEdit_delChar( 
  221.                             TEXTLINE *    pTextLine,        /* In: Ligne a ‚diter */
  222.                             int            n_col );            /* In: Car … effacer [0..] */
  223.  
  224.     /* -- affichage -- */
  225.     void open_text( 
  226.                         WIPARAMS      *    pWiParams, 
  227.                         TEXT_DRAWPAR *    pTextDrawPar );
  228.     void    vmove_text(
  229.                             WIPARAMS *pWiParams, 
  230.                             unsigned long new_pos );
  231.  
  232.     /* -- edition -- */
  233.     void    winEdit_ProcessKey(
  234.                             WIPARAMS *    pWiParams,        /* In: fenˆtre concern‚e */ 
  235.                             unsigned        u_kbd_state,    /* In: Etat des touches sp‚ciales */
  236.                             int            n_ScanCode,        /* In: ScanCode touche press‚e */
  237.                             char            c_car );            /* In: CaractŠre correspondant */
  238.  
  239.     void text_optimal( 
  240.         int wi_ckind, 
  241.         int *border_x, 
  242.         int *border_y, 
  243.         int *border_w, 
  244.         int *border_h);
  245.  
  246.  
  247. /*
  248.  * Fin du test anti red‚finition:
  249.  */
  250. #endif
  251.